namespace VRTK.Examples
|
|
{
|
|
using UnityEngine;
|
|
|
|
public class SnapDropZoneToggle : MonoBehaviour
|
|
{
|
|
public VRTK_SnapDropZone toggleZoneA;
|
|
public VRTK_SnapDropZone toggleZoneB;
|
|
|
|
protected virtual void OnEnable()
|
|
{
|
|
toggleZoneA.ObjectEnteredSnapDropZone += ToggleZoneA;
|
|
toggleZoneA.ObjectSnappedToDropZone += ToggleZoneA;
|
|
toggleZoneA.ObjectExitedSnapDropZone += UntoggleZoneA;
|
|
toggleZoneA.ObjectUnsnappedFromDropZone += UntoggleZoneA;
|
|
|
|
toggleZoneB.ObjectEnteredSnapDropZone += ToggleZoneB;
|
|
toggleZoneB.ObjectSnappedToDropZone += ToggleZoneB;
|
|
toggleZoneB.ObjectExitedSnapDropZone += UntoggleZoneB;
|
|
toggleZoneB.ObjectUnsnappedFromDropZone += UntoggleZoneB;
|
|
}
|
|
|
|
protected virtual void OnDisable()
|
|
{
|
|
toggleZoneA.ObjectEnteredSnapDropZone -= ToggleZoneA;
|
|
toggleZoneA.ObjectSnappedToDropZone -= ToggleZoneA;
|
|
toggleZoneA.ObjectExitedSnapDropZone -= UntoggleZoneA;
|
|
toggleZoneA.ObjectUnsnappedFromDropZone -= UntoggleZoneA;
|
|
|
|
toggleZoneB.ObjectEnteredSnapDropZone -= ToggleZoneB;
|
|
toggleZoneB.ObjectSnappedToDropZone -= ToggleZoneB;
|
|
toggleZoneB.ObjectExitedSnapDropZone -= UntoggleZoneB;
|
|
toggleZoneB.ObjectUnsnappedFromDropZone -= UntoggleZoneB;
|
|
}
|
|
|
|
protected virtual void ToggleZoneA(object sender, SnapDropZoneEventArgs e)
|
|
{
|
|
if (toggleZoneB.GetCurrentSnappedObject() == null)
|
|
{
|
|
toggleZoneB.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
protected virtual void UntoggleZoneA(object sender, SnapDropZoneEventArgs e)
|
|
{
|
|
if (toggleZoneA.GetCurrentSnappedObject() == null)
|
|
{
|
|
toggleZoneB.gameObject.SetActive(true);
|
|
}
|
|
}
|
|
|
|
protected virtual void ToggleZoneB(object sender, SnapDropZoneEventArgs e)
|
|
{
|
|
if (toggleZoneA.GetCurrentSnappedObject() == null)
|
|
{
|
|
toggleZoneA.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
protected virtual void UntoggleZoneB(object sender, SnapDropZoneEventArgs e)
|
|
{
|
|
if (toggleZoneB.GetCurrentSnappedObject() == null)
|
|
{
|
|
toggleZoneA.gameObject.SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
}
|